﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;

namespace Controladora.Seguridad
{
    public class CUGestionarperfiles
    {
        private static CUGestionarperfiles Instancia;



        public static CUGestionarperfiles ObtenerInstancia()
        {
            if (Instancia == null)
            {
                Instancia = new CUGestionarperfiles();
            }
            return Instancia;
        }

        private CUGestionarperfiles()
        {
            //Servicios.Conexion.ObtenerInstancia().Conectar("Seguridad");
        }

        public ReadOnlyCollection<Entidades.Seguridad.Perfil> ConsultarPerfiles()
        {
            try
            {
                Servicios.Conexion.ObtenerInstancia().Conectar("Seguridad");
                ReadOnlyCollection<Entidades.Seguridad.Perfil> ColPerfil = Modelo.Seguridad.CatalogoPerfiles.ObtenerInstancia().ListarPerfiles();
                Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
                return ColPerfil;
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            finally
            {
                Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
            }
        }

        public ReadOnlyCollection<Entidades.Seguridad.Perfil> ConsultarPerfiles(Entidades.Seguridad.Grupo oGrupo, Entidades.Seguridad.Formulario oFormulario, Entidades.Seguridad.Permiso oPermiso)
        {
            try
            {
                Servicios.Conexion.ObtenerInstancia().Conectar("Seguridad");
                ReadOnlyCollection<Entidades.Seguridad.Perfil> ColPerfil = Modelo.Seguridad.CatalogoPerfiles.ObtenerInstancia().ListarPerfiles(oGrupo, oFormulario, oPermiso);
                Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
                return ColPerfil;
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            finally
            {
                Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
            }
        }

        public ReadOnlyCollection<Entidades.Seguridad.Grupo> ConsultarGrupos()
        {
            try
            {
                Servicios.Conexion.ObtenerInstancia().Conectar("Seguridad");
                ReadOnlyCollection<Entidades.Seguridad.Grupo> ColGrupos = Modelo.Seguridad.CatalogoGrupos.ObtenerInstancia().ListarGrupos();
                Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
                return ColGrupos;
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            finally
            {
                Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
            }
        }


        public bool AgregarPerfil(Entidades.Seguridad.Perfil operfil)
        {
            Servicios.Conexion.ObtenerInstancia().Conectar("Seguridad");            
            bool res = Modelo.Seguridad.CatalogoPerfiles.ObtenerInstancia().AgregarPerfil(operfil);
            Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
            return res;
        }


        public bool EliminarPerfil(Entidades.Seguridad.Perfil operfil)
        {
            Servicios.Conexion.ObtenerInstancia().Conectar("Seguridad");
            bool res = Modelo.Seguridad.CatalogoPerfiles.ObtenerInstancia().EliminarPerfil(operfil);
            Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
            return res;
        }

        public ReadOnlyCollection<Entidades.Seguridad.Formulario> ConsultarFormularios()
        {
            try
            {
                Servicios.Conexion.ObtenerInstancia().Conectar("Seguridad");
                ReadOnlyCollection<Entidades.Seguridad.Formulario> ColFormularios = Modelo.Seguridad.CatalogoFormularios.ObtenerInstancia().ListarFormularios();
                Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
                return ColFormularios;
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            finally
            {
                Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
            }
        }

        public ReadOnlyCollection<Entidades.Seguridad.Permiso> ConsultarPermisos()
        {
            try
            {
                Servicios.Conexion.ObtenerInstancia().Conectar("Seguridad");
                ReadOnlyCollection<Entidades.Seguridad.Permiso> ColPermisos = Modelo.Seguridad.CatalogoPermisos.ObtenerInstancia().ListarPermisos();
                Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
                return ColPermisos;

            }
            catch (Exception ex)
            {
                throw (ex);
            }
            finally
            {
                Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
            }
        }
    }
}
